//创建一个函数，执行简单动画的函数
/*
    参数
        obj 要执行动画的对象 
        attr 运动的参数
        target 执行动画的目标位置
        speed 移动的速度 正数 向右移动  负数  向左移动
        callback 回调函数
*/
function move(obj, attr, target, speed, callback) {
    clearInterval(obj.timer);
    //获取元素目前的位置
    var current = parseInt(getStyle(obj, attr));
    //判断速度的正负值
    //如果从0向800移动，则speed为正
    //如果从800向0移动，则speed为负
    if (current > target) {
        //此时速度应为负值
        speed = -speed;
    }

    //开启一个定时器
    //向执行动画的对象中添加一个timer属性，用来保存它自己的定时器标识
    obj.timer = setInterval(function () {
        //获取box1原来的left值
        var oldValue = parseInt(getStyle(obj, attr));

        //在旧值的基础上增加
        var newValue = oldValue + speed;
        //判断newValue是否达到800
        //向左移动时需要判断newValue是否小于target
        //向右移动时需要判断newValue是否大于target
        if ((speed < 0 && newValue < target) || (speed > 0 && newValue > target)) {
            newValue = target;
        }
        //将新值设置给box1
        obj.style[attr] = newValue + "px";
        //当元素移动到800px时，使其停止执行动画
        if (newValue == target) {
            clearInterval(obj.timer);
            callback && callback();
        }
    }, 30);
}


/*
    定义一个函数，用来获取指定元素的当前样式
    参数：
        obj 获取样式的元素
        name 要获取的样式名
*/
function getStyle(obj, name) {
    if (obj.currentStyle)//属性 返回 ture false 
    {
        return obj.currentStyle[name];
    }
    else {
        return getComputedStyle(obj, null)[name];
    };
};

function addClass(obj, cn) {
    //检查是否含有cn
    if (!hasClass(obj, cn)) {
        obj.className += " " + cn;
    }
}
/*
     判断是否有class值
         如果有返回 true 否则返回 false
*/
function hasClass(obj, cn) {
    //创建正则表达式
    // var reg=/\bb2\b/;
    var reg = new RegExp("\\b" + cn + "\\b");
    return reg.test(obj.className);
}
/*
    删除一个元素中指定的class
*/
function removeClass(obj, cn) {
    var reg = new RegExp("\\b" + cn + "\\b");
    obj.className =obj.className.replace(reg,"");
}
/*
    元素中具有该类，则删除
    元素中没有该类，则添加
*/
function toggleClass(obj,cn){
    if(hasClass(obj,cn)){
        removeClass(obj,cn);
    }else{
        addClass(obj,cn);
    }
}